<?php
// +----------------------------------------------------------------------
// | Name 风音框架
// +----------------------------------------------------------------------
// | Author 唐启云 <tqy@fxri.net>
// +----------------------------------------------------------------------
// | Copyright Copyright © 2016-2099 方弦研究所. All rights reserved.
// +----------------------------------------------------------------------
// | Link https://www.fxri.net
// +----------------------------------------------------------------------

namespace fxsafe\facade;

/**
 * 文件类
 */
class File
{
    /**
     * 查询文件-获取列表
     * @param mixed $path 路径
     * @param string $type 类型
     * @param string $limit 次数
     * @return mixed
     */
    public function getList($path, $ext = null, $limit = -1)
    {
        // 初始化变量
        $tray['list'] = [];
        $ext_list = explode('|', $ext);
        $loop = true;
        if ($limit == 0) {
            $loop = false;
        } else if ($limit > 0) {
            --$limit;
        }
        $path = realpath($path);
        if (!is_dir($path)) {
            return $tray['list'];
        }
        $files = scandir($path);
        foreach ($files as $file) {
            if ($file == '.' || $file == '..') {
                continue;
            }
            $tray['info'] = $path . DIRECTORY_SEPARATOR . $file;
            if (is_file($tray['info']) && (in_array(pathinfo($file, PATHINFO_EXTENSION), $ext_list) || is_null($ext))) {
                $tray['list'][] = $tray['info'];
            } else if (is_dir($tray['info']) && $loop) {
                $tray['child'] = $this->getList($tray['info'], $ext, $limit);
                $tray['list'] = array_merge($tray['list'], $tray['child']);
            }
        }
        return $tray['list'];
    }

    /**
     * 写入文件
     * @param string $file 文件
     * @param string $data 数据
     * @param string $flags 方法
     * @return string
     */
    public function writeFile($file, $data = '', $flags = 0)
    {
        // 检查目录
        if (!is_dir(dirname($file))) {
            \fxsafe\Dir::create(dirname($file));
        }
        // 写入文件
        $echo = file_put_contents($file, $data, $flags);
        return $echo;
    }

    /**
     * 读取文件
     * @param string $file 文件
     * @return string
     */
    public function readFile($file)
    {
        // 检查文件
        if (!is_file($file)) {
            return false;
        }
        // 读取文件
        $echo = file_get_contents($file);
        return $echo;
    }
}
